public partial class UIChat : System.Web.UI.Page, IServiceCallback { public EndpointAddress servAddress = null; public PollingDuplexHttpBinding binding = null; protected void Page_Load(object sender, EventArgs e) { } protected void btnJoin_Click(object sender, EventArgs e) { servAddress = new EndpointAddress("http://localhost:59849/MyService.svc"); var binding = new PollingDuplexHttpBinding(); binding.DuplexMode = PollingDuplexMode.MultipleMessagesPerPoll; InstanceContext objIC = new InstanceContext(this); ServiceClient obj = new ServiceClient(objIC,binding,servAddress); string data= obj.JoinChat(txtJoin.Text); lblUser.Text = data; } public void ReciveMessage(string message) { throw new NotImplementedException(); } public void UserJoined(string[] users) { lblUser.Text = users[0].ToString(); } public void UserLeft(string[] users) { throw new NotImplementedException(); } } }
<?xml version="1.0"?> <!-- For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> </system.web> <system.serviceModel> <extensions> <bindingExtensions> <add name="pollingDuplexHttpBinding" type="System.ServiceModel.Configuration.PollingDuplexHttpBindingCollectionElement,System.ServiceModel.PollingDuplex, Version=4.0.0.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> </bindingExtensions> </extensions> <services> <service name="WebChatService.MyService" behaviorConfiguration="ServBehave"> <endpoint address="" binding="pollingDuplexHttpBinding" contract="WebChatService.IService"/> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" ></endpoint> <!--<endpoint address="" binding="mexHttpBinding" contract="IMetadataExchange"/>--> </service> </services> <!--<bindings> <pollingDuplexHttpBinding></pollingDuplexHttpBinding> </bindings>--> <behaviors> <serviceBehaviors> <behavior name="ServBehave"> <serviceMetadata httpGetEnabled="false" /> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior> </serviceBehaviors> </behaviors> <serviceHostingEnvironment aspNetCompatibilityEnabled="false" /> </system.serviceModel> </configuration>
using System.Collections.Generic; using System.ServiceModel; using System.Runtime.Serialization; namespace WebChatService { /// <summary> /// Service Interface: Holds signature of methods in service /// which are hosted for others to use them. /// </summary> [ServiceContract(CallbackContract = typeof(IServiceCallback))] public interface IService { [OperationContract] string JoinChat(string emailId); [OperationContract(IsOneWay = true)] void LeaveChat(string emailId); [OperationContract(IsOneWay = true)] void RemoveUserFromChat(string emailId); } /// <summary> /// Callback Interface: Holds methods which are needed by service /// to call the UI back in case of any event is held in service. /// </summary> /// public interface IServiceCallback { [OperationContract(IsOneWay = true)] void ReciveMessage(string message); [OperationContract(IsOneWay = true)] void UserJoined(IEnumerable<string> users); [OperationContract(IsOneWay = true)] void UserLeft(IEnumerable<string> users); } }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)