让教程SocketIO工作
我正在试图从我的域名上运行的SocketIO的例子。
我已经设法通过命令行来安装Node.JS以及ExpressJS和SocketIO。
现在,我试图让这个运行。 在服务器端我有:
(位于/ nodejs中,与/ public_html处于同一级别,不在其中)
var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); server.listen(80); app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); }); io.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); });
然后在客户端我有:
(位于/public_html/socketio.htm)
<!DOCTYPE html> <head> <title>Socket IO Test</title> <script src="https://cdn.socket.io/socket.io-1.3.4.js"></script> <style type='text/css'> * {font-family: 'Trebuchet MS';} </style> </head> <body> <h1>Socket IO Test</h1> <script> var socket = io.connect('http://localhost/'); socket.on('news', function (data) { console.log(data); socket.emit('my other event', { my: 'data' }); }); </script> </body> </html>
我不明白以下问题:
1.我的node.js从哪里运行? 我应该把它放在/ public_html?
2.我无法列出端口80,我得到了使用中的错误地址。 在我看来,这是一个普通的端口用于HTTPstream量,为什么SocketIO会使用它? 还是因为我在域之外运行nodejs? 我应该创build一个子域并将我的nodejs文件(包括/ node_modules)移动到一个子域吗?
3.我可以使用什么端口? 我尝试了3000,然后更改http://localhost/
到http://localhost:3000
但没有工作。
4.我不是在本地机器上运行,而是在我的域中运行。 我是否需要更改http://localhost/
来反映? 又名http://domain.com
?
任何帮助将不胜感激!!
服务器端 ..
var app = require('express')(); var express = require("express") var server = require('http').Server(app); var io = require('socket.io')(server); app.use(express.static(__dirname + '/nodejs')); server.listen(8000); app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); }); io.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); });
客户端..
<!DOCTYPE html> <head> <title>Socket IO Test</title> <script src="https://cdn.socket.io/socket.io-1.3.4.js"></script> <style type='text/css'> * {font-family: 'Trebuchet MS';} </style> </head> <body> <h1>Socket IO Test</h1> <script> var socket = io.connect('http://localhost:8000/'); socket.on('news', function (data) { console.log(data); socket.emit('my other event', { my: 'data' }); }); </script> </body> </html>
并使用目录结构如下..
- expressocket.js
-
的NodeJS /
socketio.htm