可以在nodeJS中调用Socket.on()

时间:2015-06-24 08:04:05

标签: javascript php node.js sockets

我想在我的PHP Web应用程序中使用nodeJS。我遵循了nodejs教程,当我在class myModule extends Module { [...] Driver.implicitClock.period = "10ns" [...] } 上运行时工作正常,但我希望像localhost:3000这样的url文件运行。所以我做的是遵循代码

chat_index.html

localhost/final/chat/chat_index.html

index.js 这是服务器端JS文件

<div id="newUser">
  <form id="user">
    <input id="username">
    <input type="submit">
  </form>
</div> 
$(document).ready(function(){
var socket = io.connect('http://localhost:3000/final/chat/chat_index.html',
                        {resource:'https://cdn.socket.io/socket.io-1.2.0.js'});

$('#user').submit(function(){
socket.emit('new user', $('#username').val());
});

}); // document.ready ends here
</script>

以上var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/final/chat/chat_index.html', function(req, res){ res.sendFile(__dirname + '/chat_index.html'); }); io.on('connection', function(socket){ console.log('connected user'); socket.on('new user', function(user){ console.log(user); }); }); http.listen(3000, function(){ console.log('listening to port'); }); 页面加载显示其上的表单。当我通过此表单服务器提交一些数据时,js没有获取数据。

我的代码中缺少某些内容,或者我的代码中出错了。 提前致谢

2 个答案:

答案 0 :(得分:1)

如果您希望在特定路线上运行套接字,可以使用 room / namespace

http://socket.io/docs/rooms-and-namespaces/#

示例(服务器)

var finalChat = io.of("/final/chat");
finalChat.on('connection', function(socket){
  console.log('connected user');

  socket.on('new user', function(user){
    console.log(user);
  });  
});

如果您想要独立私人聊天室,您可能需要使用id基本套接字空间

答案 1 :(得分:0)

您使用的是哪个版本的快递?我相信快递4应该是:

var http = require('http').createServer(app);

在客户端,您也可以尝试使用:

var socket = io.connect();

然后将资源作为脚本标记加载?