通过局域网托管Socket.io服务器
Hosting Socket.io Server over LAN
我正在构建Socket.IO的示例聊天项目(经过一些修改),我一直试图让人们同时连接localhost:3000
和127.0.0.1:3000
,但两者都不起作用。我是不是错过了什么?(如果有明显的问题,对不起。我对网络很反感。)
index.js:
var app=require('express')();
var http=require('http').Server(app);
var io=require('socket.io')(http);
var chalk=require('chalk');
var online=0;
var prt=process.argv[2]===undefined?3000:process.argv[2];
process.stdin.on('data',function(){
var str=String(process.stdin.read());
if(str.search("!quit")){
io.emit('chat message','Console: stopping server.');
process.exit();
}
});
app.get('/',function(req,res){
res.sendFile(__dirname+'/index.html');
});
io.on('connection',function(socket){
online++;
console.log(chalk.green('joined |',chalk.cyan(online),'online'));
socket.on('chat message',function(msg){
io.emit('chat message',msg);
console.log(chalk.magenta('message |',msg));
});
socket.on('disconnect',function(){
online--;
console.log(chalk.red('left |',chalk.cyan(online),'online'));
});
});
http.listen(prt,function(){
console.log(chalk.yellow('SIOChat listening on',chalk.cyan(prt)));
});
index.html(为了可读性省略了css):
<html>
<head>
<title>SIOChat</title>
</head>
<body>
<ul id='messages'></ul>
<form action=''>
<input id='m' autocomplete='off'/><button>Send</button>
</form>
<script src='https://cdn.socket.io/socket.io-1.2.0.js'></script>
<script src='http://code.jquery.com/jquery-1.11.1.js'></script>
<script>
var socket=io();
var name=prompt('Enter a nickname','Guest');
$('form').submit(function(){
socket.emit('chat message',name+': '+$('#m').val());
$('#m').val('');
return false;
});
socket.on('chat message',function(msg){
$('#messages').append($('<li>').text(msg));
});
</script>
</body>
</html>
localhost
是您自己的机器的名称。如果网络上的另一台机器试图连接到localhost
,它们将连接到自己的机器。类似地,127.0.0.1
是所谓的环回地址,并告诉套接字直接连接到您自己的计算机(localhost
是一个主机名,在大多数情况下实际上解析为127.0.0.1
ip地址)。
网络上的其他计算机将需要通过IP地址连接到您的计算机。
您可以通过在命令提示符下键入ipconfig
(在Windows上)或在Linux/OSX上键入ifconfig
来查找您的ip地址。
例如,如果您的ip地址是192.168.1.100
,那么其他机器将需要使用类似192.168.1.100:3000
的地址连接到您的计算机
相关文章:
- 如何使用Socket.io将命令从客户端发送到服务器
- Socket.IO未定义变量
- Socket.io on Mozilla Rhino
- socket.io发射三次
- AngularJS$q承诺使用socket.io
- 如何知道使用socket.io订阅/取消订阅频道
- 通过socket.io发射给特定的人
- 通过socket.io从浏览器流式传输视频
- 通过node.js和socket.io向特定用户发送数据
- 如何使用socket.io在meanjs项目中配置jshint
- 如何使用Socket.io和Node.js开发大型聊天应用程序
- RangeError nodejs socket.io
- 通过node.js和socket.io在两个用户之间发送消息
- 使用socket.io更新express实时视图
- socket.io cookie解析握手错误
- 如何在同一端口上使用ExpressJS和Socket.io
- 使用cordova快速nodejs socket.io
- 通过socket.io与heroku应用程序进行通信
- Socket.io客户端在使用名称空间时忽略端口[Bug?]
- Node.js-socket.io-对io.sockets的引用突然未定义